//定义食物类Food
class Food{
    // 定义一个属性表示食物所对应的元素
    element:HTMLElement;
    constructor() {
        this.element = document.getElementById('food')!
        // 非空断言
        // 非空断言（Non-Null Assertion）是TypeScript 2.0引入的一个新特性，它在程序设计中用于确保指定的变量不会为`null`或`undefined`。这个特性允许开发者在执行代码之前就声明变量的有效性，从而避免了因空值引发的错误。例如，如果在查询DOM元素时不指定一个有效的选择器，那么可能导致`null`或`undefined`的返回值，这通常是不期望发生的。通过在变量赋值后添加感叹号 `!`，如 `const element = document.querySelector('#myElement') !`，编译器会知道该变量不会为空，因此在后续代码中使用该变量时可以不必再做额外的空值检查。
        // 尽管非空断言可以帮助简化代码并提高效率，但它并不是万能的解决方案。过度依赖这些断言可能会导致开发者忽略真正的错误，因为它们掩盖了一些潜在的错误情况。因此，合理使用非空断言是非常重要的，并且应结合实际情况来判断何时以及如何使用它们。
        // 总结来说，非空断言是一个有用的工具，可以在适当的时候帮助减少错误和简化代码。然而，它们不应该替代良好的编码实践和对问题的全面理解。
    }
//    定义一个获取食物x轴坐标的方法
    get X(){
        return this.element.offsetLeft
    }
    //    定义一个获取食物y轴坐标的方法
    get Y(){
        return this.element.offsetTop
    }

    change(){
        //生成一个随机的位置
        // 食物的位置[0,290]
        //蛇移动一次就是一格，一格大小就是10，所以要求食物坐标是10的整数
        let top = Math.round(Math.random() * 29) * 10
        let left = Math.round(Math.random() * 29) * 10
        this.element.style.left = left+'px'
        this.element.style.top = top+'px'
    }
}

export default Food